package cn.itcast.activemq;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * 消息的生产者，发送消息到ActiveMQ消息容器
 */
public class QueueProducer {
    public static void main(String[] args) throws Exception {
        //1. 创建连接工厂
        ConnectionFactory factory = 
                new ActiveMQConnectionFactory("admin","admin","tcp://192.168.12.132:61616");
        //2. 根据连接工厂，创建连接对象(javax.jms.Connection)
        Connection conn = factory.createConnection();

        //3. 开启连接
        conn.start();

        //4. 根据连接对象创建会话对象，用于建立消息的生产者（消费者）与消息容器的操作会话。
        // 参数1：发送消息是否使用使用，如果为true，需要手动调用session.commit()方法
        // 参数2：开启自动应答机制。表示从容器中消费消息后自动通知容器，容器就删除消费后的消息。
        Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);

        //5. 根据session对象---->创建消息的目的地对象
        // 参数： 表示队列消息的名称，如果该名称不存在会自动创建。如果存在就不创建，会直接往此名称的队列中发送消息
        Queue queue = session.createQueue("email");

        //6. 根据session对象---->创建消息的生产者对象
        MessageProducer producer = session.createProducer(queue);

        //7. 根据session对象---->创建消息对象
        TextMessage message = session.createTextMessage();
        message.setText("生产者：发送消息");

        //8. 发送消息
        producer.send(message);

        //9. 关闭释放资源
        session.close();
        conn.close();
    }
}
